图像读取与显示
读取并显示raw格式文件
已知文件data1.raw
是按照裸数据的形式保存的一张图片,图像大小512×512,像素存储的数据类型为float型,请编写代码将该图像读出,并以两种不同窗口窗位显示该图像。
使用fopen()
打开文件
使用fread()
以float
格式读取文件具体内容
使用fclose()
关闭文件
% 本程序用于读取raw格式数据
clc,clear
% 读取raw数据
f1 = fopen('data1.raw','rb');
data = fread(f1,[512,512],'float');
fclose(f1);
使用subplot()
构建二分隔
使用imshow()
控制图像颜色范围
%% 绘制图窗
figure
subplot(1,2,1)
imshow(data,[])
title("data1.raw []")
subplot(1,2,2)
imshow(data,[0,0.5])
title("data1.raw [0,0.5]")
读取并显示自定义格式文件
已知文件data2.abc
以一种自定义格式的存储的一张图片。
文件分为两部分,第一部分是128个字节的文件头,第二部分是逐行存储的该图片的各个像素值。
在128个字节的文件头中,1-4字节按照int类型存储图像的宽,5-8字节按照int类型存储图像的高,第9个字节按照char类型存储数据类型的标识字。
关于数量类型标识字的定义如下:
void | bit | char | unsigned char | short | unsigned short |
---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 |
int | unsigned int | long | unsigned long | float | double |
6 | 7 | 8 | 9 | 10 | 11 |
请编写代码将该图像读出,并以合适的窗口窗位显示该图像,另以伪彩色的形式显示该图像。
使用fopen()
打开文件
使用fread()
以int
格式读取文件具体内容,前八个字节用于存放尺寸信息,正好为两个int
大小。指针指在第九个字节上,以char
类型读取,为文件储存格式
使用fseek()
跳转到129字节位置,以指定尺寸fsize
读取图像信息
使用fclose()
关闭文件
%% 读取自定义数据
f2 = fopen('data2.abc','rb');
fsize = fread(f2,[1,2],'int');
fsize = [fsize(2),fsize(1)];
ftell(f2)
format = fread(f2,[1,1],'char');
ftell(f2)
switch format
case 0
str = 'void';
case 1
str = 'bit';
case 2
str = 'char';
case 3
str = 'unsigned char';
case 4
str = 'short';
case 5
str = 'unsigned short';
case 6
str = 'int';
case 7
str = 'unsigned int';
case 8
str = 'long';
case 9
str = 'unsigned long';
case 10
str = 'float';
case 11
str = 'double';
end
% 跳转到图像存储空间
fseek(f2,129,'bof');
ftell(f2)
data2= fread(f2,fsize,str);
fclose(f2);
使用imshow()
显示图像
使用colormap
为图像赋伪彩
%%
figure
imshow(data2,[]);
title("data2.abc")
figure
imshow(data2,[]);
colormap default;
title("data2.abc, colormap default")